iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

1. 變數作用域 (Scope)

作用域其實就是變數可以在哪裡使用的範圍。我們主要有兩種作用域:區域作用域 和 全域作用域。

(1)區域作用域 (Local Scope): 當你在一個函數裡定義變數時,那個變數只在那個函數內部有效,函數外面看不到。

function sayHello() {
    let message = "Hello, World!";
    console.log(message);  // 輸出: Hello, World!
}

sayHello();
// 如果你試圖在這裡用 message 會出錯,因為它只屬於 sayHello 函數

(2)全域作用域 (Global Scope): 這種變數定義在函數外,所以整個程式裡都能用。

let globalVar = "我是全域變數";

function showGlobalVar() {
    console.log(globalVar);  // 輸出: 我是全域變數
}

showGlobalVar();

2. 閉包 (Closures)

閉包就是讓函數可以記住它所屬的範圍,哪怕這個範圍已經不在了,這讓它能一直存取到外面的變數。

function outerFunction() {
    let outerVar = "我是外部變數";

    function innerFunction() {
        console.log(outerVar);  // 雖然 outerVar 是在外面定義的,但 innerFunction 仍能存取它
    }

    return innerFunction;
}

const closure = outerFunction();
closure();  // 輸出: 我是外部變數

那閉包有什麼用呢?
ex:可以用閉包做一個計數器,來記住每次被呼叫到的次數

function counter() {
    let count = 0;

    return function() {
        count++;
        console.log(count);  // 每次呼叫都會加 1
    };
}

const increment = counter();
increment();  // 輸出: 1
increment();  // 輸出: 2


上一篇
# JavaScript入門教學Day5
下一篇
# JavaScript入門教學Day7
系列文
解鎖第一個人生成就清單:Javascript鐵人學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言